﻿using SportComplex.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using static System.Collections.Specialized.BitVector32;

namespace SportComplex.Program.Pages.EditAddPages
{
    /// <summary>
    /// Логика взаимодействия для EditAddTrainers.xaml
    /// </summary>
    public partial class EditAddTrainers : Page
    {
        // Поле для хранения экзепляра добавляемой тренера (передаем объект класса Trainers)
        private Trainers trainer = new Trainers();

        public EditAddTrainers(Trainers selectTrainer)
        {
            InitializeComponent();

            // Заполнение ComboBox названиями секций
            SelectIDSectionCbx.ItemsSource = Entities.GetContext().Section.ToList();
            SelectIDSectionCbx.SelectedValuePath = "ID_section";
            SelectIDSectionCbx.DisplayMemberPath = "name";

            if (selectTrainer != null)
                trainer = selectTrainer;

            // Передача объекта класса для участия в привязке данных
            DataContext = trainer;
        }

        // Вернуться на предыдущую страницу
        private void BackBtn_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new View());
        }

        // Сохранение изменений
        private void SaveTrainerBtn_Click(object sender, RoutedEventArgs e)
        {
            // Предварительная проверка на количесто символов, заполняемость
            StringBuilder errors = new StringBuilder();
            if (SelectIDSectionCbx.SelectedIndex == -1)
                errors.AppendLine("* Не указана секция!");
            if (string.IsNullOrWhiteSpace(trainer.lfname))
                errors.AppendLine("* ФИ (Фамилия, Имя) тренера не введено!");;
            if (string.IsNullOrWhiteSpace(trainer.login))
                errors.AppendLine("* Логин не введен!");
            foreach (var record in Entities.GetContext().Trainers)
            {
                if (record.login == trainer.login)
                    errors.AppendLine("* Такой логин тренера уже существует!");
            }
            if (string.IsNullOrWhiteSpace(trainer.passwd))
                errors.AppendLine("* Пароль не введен!");

            // Если есть ошибки, то вывести это
            if (errors.Length > 0)
            {
                MessageBox.Show(errors.ToString());
                return;
            }

            // Добавить новую запись
            if (trainer.ID_trainer == 0)
                Entities.GetContext().Trainers.Add(trainer);

            try
            {
                Entities.GetContext().SaveChanges();
                MessageBox.Show("Данные сохранены");
                NavigationService.Navigate(new View());
            }
            catch (Exception ex)
            { MessageBox.Show(ex.Message); }
        }
    }
}
